#include <iostream>

using namespace std;

//1、new的基本语法
int *func() {
    //2、在堆区创建整型数据
    //new 返回的是该数据类型的指针
    int *p = new int(10);
    return p;
}

void test1() {
    int *p = func();
    cout << *p << endl;
    //堆区的数据由程序员管理开辟，程序员管理释放
    //如果想释放堆区的数据，利用关键字delete
    delete p;
    //cout<<*p<<endl;//内存已经被释放，在此访问就是非法操作
}

//2、在堆区利用new开辟数组
void test2() {
    //在堆区创建10整型数据的数组
    int *arr = new int[10];
    for (int i = 0; i < 10; ++i) {
        arr[i] = i;
    }
    for (int i = 0; i < 10; ++i) {
        cout << arr[i] << " ";
    }
    //释放堆区数组
    //释放数组的时候要加[]才可以
    delete[]arr;
}

int main() {
    test1();
    test2();
    return 0;
}

